
#ifndef __COMM_FILE_CPP__
#define __COMM_FILE_CPP__

#include "comm/comm_file.h"
#include "comm/comm_base.h"
#include <string.h>
#include <math.h>
#include <stdio.h>

#ifndef WIN32
#include <unistd.h>
#include <pwd.h>
#endif

#include <stdlib.h>
#include <iostream>
#include <list>
#include <vector>

using namespace std;

/**************************************************************************************
功能描述: 获取地图路径
修改记录:
**************************************************************************************/
void FILE_MNG_C::GetMapDir(string &strMapDir)
{
    strMapDir = strMapFileDir_;
}

/**************************************************************************************
功能描述: 获取保存路径的文件目录
修改记录:
**************************************************************************************/
void FILE_MNG_C::GetTraceFileDir(string &strFileDir)
{
    strFileDir = strTraceFileDir_;
}

void FILE_MNG_C::GetRouteFileDir(string &strFileDir)
{
    strFileDir = strRouteFileDir_;
}

void FILE_MNG_C::GetCfgFileDir(string &strFileDir)
{
    strFileDir = strCfgFileDir_;
}

void FILE_MNG_C::GetBoundaryFileDir(string &strFileDir)
{
    strFileDir = strBoundaryFileDir_;
}

void FILE_MNG_C::GetLidarConfigDir(string &strFileDir)
{
    strFileDir = strLidarConfigDir_;
}

void FILE_MNG_C::GetCameraConfigDir(string & strFileDir)
{
    strFileDir = strCameraConfigDir_;
}

void FILE_MNG_C::GetVxlFilterFileDir(string & strFileDir)
{
    strFileDir = strVxlFilterFileDir_;
}

void FILE_MNG_C::GetWorkSceneDir(string &strDir) const
{
    strDir = strWorkSceneDir_;
}

void FILE_MNG_C::GetLocationMapDir(string &strDir) const
{
    strDir = strLocationMapDir_;
}

void FILE_MNG_C::GetLogFileDir(string &strDir) const
{
    strDir = strLogFileDir_;
}

INT32 FILE_MNG_C::GetLoginUserName(string &strUserName)
{
#ifndef WIN32
#if 0

    // 手动执行时能正确获取，自动启动时获取失败
    char acUsrName[100];

    if (0 == getlogin_r(acUsrName, sizeof(acUsrName))) {
        strUserName = acUsrName;
        return 0;
    } else {
        return -1;
    }
    
#endif

    uid_t          userid = getuid();
    struct passwd *pwd    = getpwuid(userid);
    if ((pwd != NULL) && (pwd->pw_name != NULL)) {
        strUserName = pwd->pw_name;
        return 0;
    } else {
        return -1;
    }
    
#else
    strUserName = "";
    return 0;
#endif
}

/**************************************************************************************
功能描述: 判断文件是否存在
修改记录:
**************************************************************************************/
bool FILE_OPRT_C::IsExist(const char *pcFilePath)
{
    if (pcFilePath == NULL) {
        return false;
    }
    
#ifdef WIN32
    FILE *pf = fopen(pcFilePath, "r");
    if (pf != NULL) {
        fclose(pf);
        return true;
    } else {
        return false;
    }
#else
    return (0 == access(pcFilePath, 0));
#endif
}

/**************************************************************************************
功能描述: 判断文件是否存在
修改记录:
**************************************************************************************/
bool FILE_OPRT_C::IsExist(const string &strFilePath)
{
    return IsExist(strFilePath.c_str());
}

/**************************************************************************************
功能描述: 修改文件名，修改成功返回0，失败返回-1
          注意，调用后目标老文件会被删除
修改记录:
**************************************************************************************/
int FILE_OPRT_C::Rename(const string &strOldFilePath, const string &strNewFilePath, bool isCoverFile = false)
{
    if (strOldFilePath == strNewFilePath) {
        ST_LOG_ERR("Old File Is Same With New File.");
        return 0;
    }
    
    if (!IsExist(strOldFilePath)) {
        ST_LOG_ERR("Old File(%s) Not Exist.", strOldFilePath.c_str());
        return -1;
    }
    
    if (isCoverFile && IsExist(strNewFilePath)) {
        ST_LOG_INFO("New File(%s) Exist And To Del.", strNewFilePath.c_str());
        DelFile(strNewFilePath);
    }
    
    return rename(strOldFilePath.c_str(), strNewFilePath.c_str());
}

/**************************************************************************************
功能描述: 删除文件
修改记录:
**************************************************************************************/
void FILE_OPRT_C::DelFile(const string &strFilePath)
{
    remove(strFilePath.c_str());
}

int  FILE_OPRT_C::CreateDirFile(const string &strDirPath)
{
    int rslt = mkdir(strDirPath.c_str(), ACCESSPERMS);
    if (rslt != 0) {
        ST_LOG_ERR("Create Dir %s Fail.", strDirPath.c_str());
        return -1;
    }
    return 0;
}

void FILE_OPRT_C::DelDirFile(const string &strFilePath)
{
    struct stat statbuf;
    lstat(strFilePath.c_str(), &statbuf);
    if (S_ISREG(statbuf.st_mode)) {
        DelFile(strFilePath);
    }
    else if(S_ISDIR(statbuf.st_mode)) {
        DIR* pDir = opendir(strFilePath.c_str());
        if (pDir != NULL) {
            struct dirent *pDirInfo = readdir(pDir);
            while (pDirInfo != NULL) {
                string strSubFilePath = strFilePath + pDirInfo->d_name;
                DelDirFile(strSubFilePath);  
                pDirInfo = readdir(pDir);
            }
            closedir(pDir);
            rmdir(strFilePath.c_str());
        }
    }
}

/**************************************************************************************
功能描述: 复制文件
修改记录:
**************************************************************************************/
int FILE_OPRT_C::Copy(const string &strSrcFilePath, const string &strTgtFilePath, bool isCoverFile = false)
{
    if (strSrcFilePath == strTgtFilePath) {
        ST_LOG_ERR("Src File Is Same With Tgt File.");
        return 0;
    }

    if (!IsExist(strSrcFilePath)) {
        ST_LOG_ERR("Src File(%s) Not Exist.", strSrcFilePath.c_str());
        return -1;
    }

    if (isCoverFile && IsExist(strTgtFilePath)) {
        ST_LOG_INFO("Tgt File(%s) Exist And To Del.", strTgtFilePath.c_str());
        DelFile(strTgtFilePath);
    }
    
    string strCmd = "cp -f " + strSrcFilePath + " " + strTgtFilePath;
    system(strCmd.c_str());

    return 0;
}

/**************************************************************************************
功能描述: 将文件缓存区内容输出到文件
修改记录:
**************************************************************************************/
void FILE_OPRT_C::SyncBuffToFile(FILE *pf)
{
    if (pf != NULL) {
        fflush(pf);
    }
}

/**************************************************************************************
功能描述: 将内存区文件强制输出到硬盘
修改记录:
**************************************************************************************/
void FILE_OPRT_C::SyncFileToDisk(FILE *pf)
{
#ifndef WIN32
    if (pf != NULL) {
        fsync(fileno(pf));
    }
#endif
}

/**************************************************************************************
功能描述: 从路径中获取文件名
修改记录:
**************************************************************************************/
void FILE_OPRT_C::GetFileNameFrmPath(const string &strFilePath, string &strFileName)
{
    int fileNamePos = strFilePath.find_last_of("/\\");   /* 包含linux和win的 */
    if (fileNamePos < 0) {
        fileNamePos = 0;        /* 没找到说明没有包含路径 */
    } else {
        ++fileNamePos;          /* 有路径时跳过分隔符 */
    }

    strFileName = strFilePath.substr(fileNamePos);
}

/**************************************************************************************
功能描述: 从路径中获取文件目录
修改记录:
**************************************************************************************/
void FILE_OPRT_C::GetFileDirFrmPath(const string &strFilePath, string &strFileDir)
{
    int fileNamePos = strFilePath.find_last_of("/\\");   /* 包含linux和win的 */
    if (fileNamePos < 0) {
        fileNamePos = 0;
    }

    strFileDir = strFilePath.substr(0, fileNamePos);
}

/**************************************************************************************
功能描述: 获取地图目录
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetMapDir(string &strMapDir)
{
    strMapDir = strMapDir_;
}

/**************************************************************************************
功能描述: 获取地图路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetMapPath(const string &strMapName, string &strMapPath)
{
    strMapPath = strMapDir_ + strMapName;
}

/**************************************************************************************
功能描述: 获取地图路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetMapFilePath(const string &strMapFileName, string &strMapFilePath)
{
    strMapFilePath = strMapDir_ + strMapFileName;
}

/**************************************************************************************
功能描述: 获取组合地图文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetCombMapFileName(string &strCombMapFileName)
{
    strCombMapFileName = strCombMapFileName_;
}

/**************************************************************************************
功能描述: 获取组合地图文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetCombMapFilePath(string &strCombMapFilePath)
{
    string strCombMapFileName;
    GetCombMapFileName(strCombMapFileName);

    GetMapFilePath(strCombMapFileName, strCombMapFilePath);
}

/**************************************************************************************
功能描述: 获取地图拆分配置文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetSplitCfgFileName(const string &strSrcMapName, string &strSplitCfgFileName)
{
    strSplitCfgFileName = strSrcMapName + strSplitCfgFileExName_;
}

/**************************************************************************************
功能描述: 获取地图拆分配置文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetSplitCfgFilePath(const string &strSrcMapName, string &strSplitCfgFilePath)
{
    string strSplitCfgFileName;
    GetSplitCfgFileName(strSrcMapName, strSplitCfgFileName);

    GetMapFilePath(strSplitCfgFileName, strSplitCfgFilePath);
}

void MAP_FILE_MNG_C::GetMapExYamlFilePath(string &strMapExYamlFilePath)
{
    GetMapFilePath(strMapExYamlFileName_, strMapExYamlFilePath);
}

/**************************************************************************************
功能描述: 根据子地图名称
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetSubMapName(UINT32 subMapNo, string &strSubMapName)
{
    char strSubMapNo[50];
    sprintf(strSubMapNo, "%u", subMapNo);

    strSubMapName = strDefautMapName_ + strSubMapNo;
}

/**************************************************************************************
功能描述: 获取子地图编号
修改记录:
**************************************************************************************/
INT32 MAP_FILE_MNG_C::GetSubMapNo(string &strSubMapName)
{
    R_ASSERT(strSubMapName.length() > strDefautMapName_.length(), -1);
    string strMapNo = strSubMapName.substr(strDefautMapName_.length());

    UINT32 subMapNo;
    if (1 != sscanf(strMapNo.c_str(), "%u", &subMapNo)) {
        return -1;
    }

    return (int)subMapNo;
}

/**************************************************************************************
功能描述: 获取子地图路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetSubMapPath(UINT32 subMapNo, string &strSubMapPath)
{
    string strSubMapName;
    GetSubMapName(subMapNo, strSubMapName);

    GetMapPath(strSubMapName, strSubMapPath);
}

/**************************************************************************************
功能描述: 获取默认地图名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetDefaultMapName(string &strDefaultMapName)
{
    strDefaultMapName.assign(strDefautMapName_);
}

/**************************************************************************************
功能描述: 获取默认地图YAML文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetDefaultYamlFileName(string &strDefaultYamlFileName)
{
    strDefaultYamlFileName = strDefautMapName_ + strMapYamlSuffix_;
}

/**************************************************************************************
功能描述: 获取默认地图YAML文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetDefaultYamlFilePath(string &strDefaultYamlFilePath)
{
    string strDefaultYamlFileName;
    GetDefaultYamlFileName(strDefaultYamlFileName);

    GetMapFilePath(strDefaultYamlFileName, strDefaultYamlFilePath);
}

/**************************************************************************************
功能描述: 获取默认地图PGM文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetDefaultPgmFileName(string &strDefaultPgmFileName)
{
    strDefaultPgmFileName = strDefautMapName_ + strMapPgmSuffix_;
}

/**************************************************************************************
功能描述: 获取默认地图PGM文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetDefaultPgmFilePath(string &strDefaultPgmFilePath)
{
    string strDefaultPgmFileName;
    GetDefaultPgmFileName(strDefaultPgmFileName);

    GetMapFilePath(strDefaultPgmFileName, strDefaultPgmFilePath);
}

/**************************************************************************************
功能描述: 获取YAML文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetYamlFileName(const string &strMapName, string &strYamlFileName)
{
    strYamlFileName = strMapName + strMapYamlSuffix_;
}

/**************************************************************************************
功能描述: 获取YAML文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetYamlFilePath(const string &strMapName, string &strYamlFilePath)
{
    string strYamlFileName;
    GetYamlFileName(strMapName, strYamlFileName);

    GetMapFilePath(strYamlFileName, strYamlFilePath);
}

/**************************************************************************************
功能描述: 获取PGM文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetPgmFileName(const string &strMapName, string &strPgmFileName)
{
    strPgmFileName = strMapName + strMapPgmSuffix_;
}

/**************************************************************************************
功能描述: 获取PGM文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetPgmFilePath(const string &strMapName, string &strPgmFilePath)
{
    string strPgmFileName;
    GetPgmFileName(strMapName, strPgmFileName);

    GetMapFilePath(strPgmFileName, strPgmFilePath);
}

/**************************************************************************************
功能描述: 获取地图的临时名称
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetTmpMapName(const string &strMapName, string &strTmpMapName)
{
    strTmpMapName = strMapName + strTmpFileExName_;
}

/**************************************************************************************
功能描述: 获取yaml临时文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetTmpYamlFileName(const string &strMapName, string &strTmpYamlFileName)
{
    string strTmpMapName;
    GetTmpMapName(strMapName, strTmpMapName);
    
    strTmpYamlFileName = strTmpMapName + strMapYamlSuffix_;
}

/**************************************************************************************
功能描述: 获取yaml临时文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetTmpYamlFilePath(const string &strMapName, string &strTmpYamlFilePath)
{
    string strTmpYamlFileName;
    GetTmpYamlFileName(strMapName, strTmpYamlFileName);

    GetMapFilePath(strTmpYamlFileName, strTmpYamlFilePath);
}

/**************************************************************************************
功能描述: 获取pgm文件名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetTmpPgmFileName(const string &strMapName, string &strTmpPgmFileName)
{
    string strTmpMapName;
    GetTmpMapName(strMapName, strTmpMapName);

    strTmpPgmFileName = strTmpMapName + strMapPgmSuffix_;
}

/**************************************************************************************
功能描述: 获取pgm文件路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetTmpPgmFilePath(const string &strMapName, string &strTmpPgmFilePath)
{
    string strTmpPgmFileName;
    GetTmpPgmFileName(strMapName, strTmpPgmFileName);

    GetMapFilePath(strTmpPgmFileName, strTmpPgmFilePath);
}

/**************************************************************************************
功能描述: 获取虚拟障碍地图名
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetVirtualObstMapName(UINT32 subMapNo, string &strVirtualObstMapName)
{
    string strSubMapName;
    GetSubMapName(subMapNo, strSubMapName);

    strVirtualObstMapName = strSubMapName + strVirtualObstMapExName_;
}

/**************************************************************************************
功能描述: 获取虚拟障碍地图路径
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetVirtualObstMapPath(UINT32 subMapNo, string &strVirtualObstMapPath)
{
    string strVirtualObstMapName;
    GetVirtualObstMapName(subMapNo, strVirtualObstMapName);

    GetMapPath(strVirtualObstMapName, strVirtualObstMapPath);
}

/**************************************************************************************
功能描述: 获取仿真障碍地图
修改记录:
**************************************************************************************/
void MAP_FILE_MNG_C::GetSimulaitonObstMapPath(string &strObstMapPath)
{
    string strSimulationObstMapName;
    strSimulationObstMapName = strDefautMapName_ + strSimulationObstMapExName_;

    GetMapPath(strSimulationObstMapName, strObstMapPath);
}

/**************************************************************************************
功能描述: 判断地图是否存在
修改记录:
**************************************************************************************/
bool MAP_FILE_MNG_C::isMapPathExist(const string &strMapPath)
{
    string strYamlFilePath = strMapPath + strMapYamlSuffix_;
    string strPgmFilePath  = strMapPath + strMapPgmSuffix_;

    /* yaml和pgm同时存在才认为地图存在 */
    return (objFileOprt_.IsExist(strYamlFilePath) && objFileOprt_.IsExist(strPgmFilePath));
}

/**************************************************************************************
功能描述: 重命名地图
          注意: 调用后如果失败，文件状态不确定
修改记录:
**************************************************************************************/
INT32 MAP_FILE_MNG_C::RenameMap(const string &strSrcMapName, const string &strTgtMapName)
{
    DelMap(strTgtMapName);
    
    if (0 != RenamePgmFile(strSrcMapName, strTgtMapName)) {
        ST_LOG_ERR("RenamePgmFile(%s, %s) Fail.", strSrcMapName.c_str(), strTgtMapName.c_str());
        return -1;
    }

    if (0 != RenameYamlFile(strSrcMapName, strTgtMapName)) {
        ST_LOG_ERR("RenameYamlFile(%s, %s) Fail.", strSrcMapName.c_str(), strTgtMapName.c_str());
        return -1;
    }

    return 0;
}

/**************************************************************************************
功能描述: 复制地图
修改记录:
**************************************************************************************/
INT32 MAP_FILE_MNG_C::CopyMap(const string &strSrcMapName, const string &strTgtMapName)
{
    DelMap(strTgtMapName);

    /* 复制pgm文件 */
    if (0 != CopyPgmFile(strSrcMapName, strTgtMapName)) {
        DelMap(strTgtMapName);
        ST_LOG_ERR("CopyPgmFile(%s, %s) Fail.", strSrcMapName.c_str(), strTgtMapName.c_str());
        return -1;
    }
    
    /* 复制yaml文件 */
    if (0 != CopyYamlFile(strSrcMapName, strTgtMapName)) {
        DelMap(strTgtMapName);
        ST_LOG_ERR("CopyYamlFile(%s, %s) Fail.", strSrcMapName.c_str(), strTgtMapName.c_str());
        return -1;
    }

    return 0;
}

void MAP_FILE_MNG_C::DelMap(const string &strMapName)
{
    DelPgmFile(strMapName);
    DelYamlFile(strMapName);
}

INT32 MAP_FILE_MNG_C::RenamePgmFile(const string &strSrcMapName, const string &strTgtMapName)
{
    /* pgm文件直接修改文件名即可 */
    string strSrcPgmFilePath;
    GetPgmFilePath(strSrcMapName, strSrcPgmFilePath);
    
    string strTgtPgmFilePath;
    GetPgmFilePath(strTgtMapName, strTgtPgmFilePath);
    
    if (0 != objFileOprt_.Rename(strSrcPgmFilePath, strTgtPgmFilePath, true)) {
        ST_LOG_ERR("objFileOprt_.Rename(%s, %s) Fail.", strSrcPgmFilePath.c_str(), strTgtPgmFilePath.c_str());
        return -1;
    }

    return 0;
}

INT32 MAP_FILE_MNG_C::RenameYamlFile(const string &strSrcMapName, const string &strTgtMapName)
{
    /* yaml文件需要修改文件类容，不能直接修改文件名 */
    if (0 != CopyYamlFile(strSrcMapName, strTgtMapName)) {
        ST_LOG_ERR("CopyYamlFile(%s, %s) Fail.", strSrcMapName.c_str(), strTgtMapName.c_str());
        return -1;
    }

    DelYamlFile(strSrcMapName);
    return 0;
}

INT32 MAP_FILE_MNG_C::CopyPgmFile(const string &strSrcMapName, const string &strTgtMapName)
{
    string strSrcPgmFilePath;
    GetPgmFilePath(strSrcMapName, strSrcPgmFilePath);
    
    string strTgtPgmFilePath;
    GetPgmFilePath(strTgtMapName, strTgtPgmFilePath);
    
    if (0 != objFileOprt_.Copy(strSrcPgmFilePath, strTgtPgmFilePath, true)) {
        ST_LOG_ERR("Copy Src(%s) Pgm To Tgt(%s) Fail.", strSrcPgmFilePath.c_str(), strTgtPgmFilePath.c_str());
        return -1;
    }

    return 0;
}

INT32 MAP_FILE_MNG_C::CopyYamlFile(const string &strSrcMapName, const string &strTgtMapName)
{   
    string strSrcYamlFilePath;
    GetYamlFilePath(strSrcMapName, strSrcYamlFilePath);
    FILE *pfSrcYamlFile = fopen(strSrcYamlFilePath.c_str(), "r");
    if (pfSrcYamlFile == NULL) {
        ST_LOG_ERR("Open Src Yaml File(%s) Fail.", strSrcYamlFilePath.c_str());
        return -1;
    }

    string strTgtYamlFilePath;
    GetYamlFilePath(strTgtMapName, strTgtYamlFilePath);
    FILE *pfTgtYamlFile = fopen(strTgtYamlFilePath.c_str(), "w");
    if (pfTgtYamlFile == NULL) {
        fclose(pfSrcYamlFile);
        ST_LOG_ERR("Open Tgt File(%s) Fail.", strTgtYamlFilePath.c_str());
        return -1;
    }

    string strSrcPgmFileName;
    GetPgmFileName(strSrcMapName, strSrcPgmFileName);
    BOOL isExistSrcPgmFileName = false;
    char acLine[512];
    while (NULL != fgets(acLine, sizeof(acLine), pfSrcYamlFile)) {
        string strLine(acLine);
        if (strLine.length() >= (sizeof(acLine) - 1)) {
            fclose(pfSrcYamlFile);
            fclose(pfTgtYamlFile);
            ST_LOG_ERR("Line(%s) Is longer Than Buff.", acLine);
            return -1;
        }

        UINT32 idx = strLine.find(strSrcPgmFileName);
        if (string::npos != idx) {
            isExistSrcPgmFileName = true;

            string strTgtPgmFileName;
            GetPgmFileName(strTgtMapName, strTgtPgmFileName);
            strLine.replace(idx, strSrcPgmFileName.length(), strTgtPgmFileName, 0, strTgtPgmFileName.length());
        }

        fputs(strLine.c_str(), pfTgtYamlFile);
    }

    fclose(pfSrcYamlFile);
    fclose(pfTgtYamlFile);

    if (!isExistSrcPgmFileName) {
        ST_LOG_ERR("Src Yaml File(%s) Not Exit Pgm File Line.", strSrcYamlFilePath.c_str());
        return -1;
    }

    return 0;
}

void MAP_FILE_MNG_C::DelPgmFile(const string &strMapName)
{
    string strPgmFilePath;
    GetPgmFilePath(strMapName, strPgmFilePath);
    objFileOprt_.DelFile(strPgmFilePath);
}

void MAP_FILE_MNG_C::DelYamlFile(const string &strMapName)
{
    string strYamlFilePath;
    GetYamlFilePath(strMapName, strYamlFilePath);
    objFileOprt_.DelFile(strYamlFilePath);
}

void WORK_SCENE_FILE_MNG_C::GetRoadsInfoFilePath(string &strPath) const
{
    strPath = strNavigationMapDir_ + strRoadsInfoFileName_;
}

void WORK_SCENE_FILE_MNG_C::GetRoadRouteFilePath(UINT32 roadNo, UINT32 routeId, string &strFilePath) const
{
    strFilePath = strNavigationMapDir_ + "road" + ToString(roadNo) + "_route" + ToString(routeId) + ".txt";
}

void WORK_SCENE_FILE_MNG_C::GetRoadLineFilePath(UINT32 roadNo, UINT32 lineId, string &strFilePath) const
{
    strFilePath = strNavigationMapDir_ + "road" + ToString(roadNo) + "_line" + ToString(lineId) + ".txt";
}

void WORK_SCENE_FILE_MNG_C::GetSimulationObstMapPath(string &strPath) const
{
    strPath = strSimulationMapDir_ + strSimulationMapName_;
}

const string &WORK_SCENE_FILE_MNG_C::GetLocMapDir(void) const
{
    return strLocationMapDir_;
}

const string &WORK_SCENE_FILE_MNG_C::GetNavMapDir(void) const
{
    return strNavigationMapDir_;
}

const string &WORK_SCENE_FILE_MNG_C::GetSimulationMapDir(void) const
{
    return strSimulationMapDir_;
}

void CFG_FILE_MNG_C::GetCfgParamFilePath(string &strCfgParamFilePath)
{
    strCfgParamFilePath = strCfgFileDir_ + strCfgParamFileName_;
}

#endif


